﻿/*
 * Criado por SharpDevelop.
 * Usuário: Administrador
 * Data: 16/6/2011
 * Hora: 9:49
 * 
 * Para alterar este modelo use Ferramentas | Opções | Codificação | Editar Cabeçalhos Padrão.
 */
using System;
using System.Collections.Generic;

namespace estacionamento.classes
{
	/// <summary>
	/// Description of Servico
	/// </summary>
	public class Servico : estacionamento.comum.DefaultClass, estacionamento.comum.IClass
	{
		
		#region private declaration
		private string servico_nome_empresa;
		private string servico_nome_motorista;
		private string servico_v_placa;
		private string servico_v_modelo;
		private string servico_v_cidade;
		private string servico_finalidade;
		private string servico_destino;
		private string servico_data_entrada;
		private string servico_data_saida;
		private string servico_hora_entrada;
		private string servico_hora_saida;
		private string servico_situacao;
		#endregion
		
		#region Properties
		public string NomeEmpresa{
			get { return servico_nome_empresa; }
			set { servico_nome_empresa = value; }
		}
		
		public string NomeMotorista{
			get { return servico_nome_motorista; }
			set { servico_nome_motorista = value; }
		}
		
		public string Vplaca {
			get { return servico_v_placa; }
			set { servico_v_placa = value; }
		}
		
		public string Vmodelo {
			get { return servico_v_modelo; }
			set { servico_v_modelo = value; }
		}
		
		public string Vcidade {
			get { return servico_v_cidade; }
			set { servico_v_cidade = value; }
		}
		
		public string Situacao {
			get { return servico_situacao; }
			set { servico_situacao = value; }
		}
		
		public string Finalidade {
			get { return servico_finalidade; }
			set { servico_finalidade = value; }
		}
		
		public string Destino {
			get { return servico_destino; }
			set { servico_destino = value; }
		}
		
		
		public string DataEntrada {
			get { return servico_data_entrada; }
			set { servico_data_entrada = value; }
		}
		
		public string DataSaida {
			get { return servico_data_saida; }
			set { servico_data_saida = value; }
		}
		
		public string HoraEntrada {
			get { return servico_hora_entrada; }
			set { servico_hora_entrada = value; }
		}
		
		public string HoraSaida {
			get { return servico_hora_saida; }
			set { servico_hora_saida = value; }
		}
		
		#endregion
		
		public Servico()
		{
			clear();
			gsql.table = "servico";
			_sequence  = "servico_servico_id";
		}

		public void clear()
		{
			servico_nome_empresa	= string.Empty;
			servico_nome_motorista	= string.Empty;
			servico_v_placa			= string.Empty;
			servico_v_modelo		= string.Empty;
			servico_v_cidade		= string.Empty;
			servico_finalidade		= string.Empty;
			servico_destino     	= string.Empty;
			servico_data_entrada    = string.Empty;
			servico_hora_entrada    = string.Empty;
			servico_data_saida  	= string.Empty;
			servico_hora_saida 		= string.Empty;
			servico_situacao		= string.Empty;
		}
		
		public override void @get(System.Data.DataRow dr)
		{
			_id						= dr["servico_id"].ToString();
			servico_nome_empresa	= dr["servico_nome_empresa"].ToString();		
			servico_nome_motorista	= dr["servico_nome_motorista"].ToString();				
			servico_v_placa			= dr["servico_v_placa"].ToString();		
			servico_v_modelo		= dr["servico_v_modelo"].ToString();			
			servico_v_cidade		= dr["servico_v_cidade"].ToString();	
			servico_finalidade		= dr["servico_finalidade"].ToString();	
			servico_destino			= dr["servico_destino"].ToString();
			servico_data_entrada    = Convert.ToDateTime(dr["servico_data_entrada"]).ToString("dd/MM/yyyy");
			servico_data_saida      = Convert.ToDateTime(dr["servico_data_saida"]).ToString("dd/MM/yyyy");
			servico_hora_entrada    = Convert.ToDateTime(dr["servico_hora_entrada"]).ToString("HH:mm:ss");
			servico_hora_saida      = Convert.ToDateTime(dr["servico_hora_saida"]).ToString("HH:mm:ss");
			servico_situacao		= dr["servico_situacao"].ToString();				
		}
		
		public override void setGsql()
		{
			gsql.setValue(_id					, "servico_id");
			gsql.setValue(servico_nome_empresa	, "servico_nome_empresa");		
			gsql.setValue(servico_nome_motorista, "servico_nome_motorista");			
			gsql.setValue(servico_v_placa			, "servico_v_placa");		
			gsql.setValue(servico_v_modelo		, "servico_v_modelo");			
			gsql.setValue(servico_v_cidade		, "servico_v_cidade");	
			gsql.setValue(servico_finalidade	, "servico_finalidade");	
			gsql.setValue(servico_destino		, "servico_destino");
			gsql.setValue(Convert.ToDateTime(servico_data_entrada).ToString("yyyy-MM-dd"),
			              "servico_data_entrada");
			gsql.setValue(Convert.ToDateTime(servico_data_saida).ToString("yyyy-MM-dd"),
			              "servico_data_saida");		
			gsql.setValue(servico_hora_entrada, "servico_hora_entrada");
			gsql.setValue(servico_hora_saida  , "servico_hora_saida");
			gsql.setValue(servico_situacao		, "servico_situacao");	
		}
		
		
	}


	public class Servicos : estacionamento.comum.DefaultList, estacionamento.comum.IList
	{
		public Servicos()
		{
			gsql.table = "servico";
		}
		

		public Servico get(int index)
		{
			return (Servico)items[index];
		}
		
		public Servico get()
		{
			return (Servico)items[index];
		}
		
		public bool fillList()
		{
			gsql.prepare();
			gsql.setValue("","*");
			gsql.additionalWhere= "ORDER BY servico_data_entrada, servico_hora_entrada";
			
			return mountList();
		}
		
		public bool fillListPorData(DateTime data_inicio, DateTime data_fim)
		{
			gsql.prepare();
			gsql.setValue("","*");
			gsql.conditionalWhere = "servico_data_entrada BETWEEN ('"
									+ data_inicio.ToString("yyyy-MM-dd")
				                  + "') AND ('"
									+ data_fim.ToString("yyyy-MM-dd")
								  + "')";
			gsql.junction = "OR";
			
			gsql.conditionalWhere = "servico_data_saida BETWEEN ('"
									+ data_inicio.ToString("yyyy-MM-dd")
				                  + "') AND ('"
									+ data_fim.ToString("yyyy-MM-dd")
								  + "')";
			
			gsql.additionalWhere= "ORDER BY servico_data_entrada, servico_hora_entrada";
			
			return mountList();
		}
		
		public bool fillListAbertas()
		{
			gsql.prepare();
			gsql.setValue("","*");
			gsql.conditionalWhere = " servico_situacao = 'A' ";			
			gsql.additionalWhere= "ORDER BY servico_data_entrada, servico_hora_entrada";
			
			return mountList();
		}		
		
		private bool mountList()
		{
			int tam;
			
			if (!gsql.execute())
			{
				msgErro = gsql.getMsgErro();
				return false;
			}
			
			tam = gsql.getRowCount();
			clear();
			for (int i=0; i < tam; i++)
			{
				Servico obj = new Servico();
				obj.get(gsql.getRow(i));
				
				items.Add(obj);
			}
			return true;
		}
		
		public bool searchByPlaca(string value)
		{
			int tam;
			
			tam= items.Count;
			for(int i=0; i < tam; i++)
			{
				if (((Servico)items[i]).Vplaca.Equals(value))
				{
					index = i;
					return true;
				}
			}
			return false;
		}		
		
	}
}
